mmap {pintos}{swjungle}


요약

file-mapped virtual memory. 파일을 읽을 때 뒤늦게 가상주소와 파일 페이지가 담긴 커널가상주소 매핑을 시도하라. 파일을 수정할 때 커널 메모리에 수정만 해놓고 바로 파일에 수정사항을 보내지 말라. unmap, swapped out 상황에 dirty한 경우에만 내려보내자.

void *mmap (void *addr, size_t length, int writable, int fd, off_t offset);

유저는 malloc을 사용할 수 없지만 addr을 채워넣어야 하기 때문에 유저 가상주소를 직접 작성하여 넣어주어야 한다(...) 리눅스처럼 똑똑하게 NULL이 들어가면 알아서 메모리 할당해주지 않는다는 점 알아둘 것.

void munmap (void *addr);

Closing or removing a file does not unmap any of its mappings
파일을 닫거나 지우는 행위가 unmap을 하지 않습니다.

fd가 닫혀있어도 munmap을 호출하지 않는 이상, mmapped address에 매핑은 살아있구나